const express = require("express")
const router = express.Router()

// 引入控制层
const usersController = require("../controllers/usersController")
const { body, query } = require("express-validator")

// router.use(function timeLog(req, res, next) {
//     console.log('Time: ', Date.now())
//     //模块路由中检测是否携带了 token
//     if (!req.auth) {
//         return res.send({
//             status: 403,
//             message: "缺少token"
//         });
//     }
//     next()
// })

// 引入中间件
const checkPermission = require('../middleware/checkPermission');
const auth = require('../middleware/auth');

// 1. 用户的创建及用户的注册
router.post('/adduser',
    //      [
    //     // 用户名验证：至少2个字符，只包含字母和空格
    //     body('username').isLength({ min: 2 }).withMessage('用户名至少需要2个字符'),

    //     // 密码验证：至少7个字符，包含至少一个数字和一个特殊字符
    //     body('password').isLength({ min: 7 }).withMessage('用户密码至少需要7个字符'),

    //     // 电子邮件验证：确保是有效的电子邮件地址
    //     body('email').isEmail().withMessage('必须是有效的电子邮件地址'),

    //     // 手机号验证：确保是有效的手机号，根据地区调整正则表达式
    //     body('phone').isMobilePhone({ strictMode: true }).withMessage('必须是有效的手机号'),

    //     // 角色ID验证：不能为空，且必须是正整数
    //     body('role_id').notEmpty().withMessage('用户角色不能为空'),

    //     // 真实姓名验证：至少2个字符，只包含字母和空格
    //     body('truename').isLength({ min: 2 }).withMessage('用户真实姓名至少需要2个字符'),
    // ], 
    // Error: Invalid locale '[object Object]'   待研究
    usersController.register)
// 2. 用户的登录
router.post('/login', usersController.login)
// 3. 用户的删除-软删除
router.get("/delete_f", auth, checkPermission("system_user_delete"), usersController.delete_f)
router.get("/start", auth, checkPermission("system_user_delete"), usersController.start)
// 4. 用户的删除-真删除
router.get("/delete_t", auth, checkPermission("system_user_delete"), usersController.delete_t)
// 5. 用户的列表
router.get("/userlist", [
    query('page_size').optional().toInt(),
    query('page').optional().toInt()
], auth, checkPermission("system_user_list"),
    usersController.userlist_c)
// 6. 用户的修改-获取数据
router.get("/edit_get", auth, checkPermission("system_user_list"), usersController.edit_get_c)
router.get("/teacher_list", auth, checkPermission("system_user_list"), usersController.teacher_list)
// 10. 用户个人信息的修改-获取数据
router.get("/per_edit_get", usersController.per_edit_get)
// 7. 用户的修改-设置数据
router.post("/edit_set", [
    // 跟添加用户比少一个密码的修改
    body('username').isLength({ min: 2 }).withMessage('用户名至少需要2个字符'),
    body('email').isEmail().withMessage('必须是有效的电子邮件地址'),
    body('phone').isMobilePhone().withMessage('必须是有效的手机号'),
    // body('role_id').notEmpty().withMessage('用户角色不能为空'),
    body('truename').isLength({ min: 2 }).withMessage('用户真实姓名至少需要2个字符')
], auth,checkPermission("system_user_edit"),
usersController.edit_set_c)
// 9. 用户的个人信息的修改
router.post("/per_edit_set", [
    // 跟添加用户比少一个密码的修改
    body('username').isLength({ min: 2 }).withMessage('用户名至少需要2个字符'),
    body('email').isEmail().withMessage('必须是有效的电子邮件地址'),
    body('phone').isMobilePhone().withMessage('必须是有效的手机号'),
    body('role_id').notEmpty().withMessage('用户角色不能为空'),
    body('truename').isLength({ min: 2 }).withMessage('用户真实姓名至少需要2个字符')
], auth,checkPermission("sysset_personinfo_edit"),
usersController.per_edit_set)
// 8. 用户退出登录
router.get('/logout', usersController.logout)
// 10. 用户密码重置
router.get("/resetpwd",auth,checkPermission("system_user_edit"), usersController.reset_pwd)
// 11. 检查token是否过期
router.get("/check", usersController.checkToken)
// 12. 用户修改密码
router.post("/change_pwd",auth,checkPermission("sysset_personinfo_editPwd"), usersController.change_pwd)

module.exports = router;